Организация конвертации данных и обмена данными с помощью конфигурации "Конвертация данных 2.0"

В этом методическом руководстве описаны принципы организации конвертации данных и обмена данными между типовыми конфигурациями на платформах "1С:Предприятие 8" и "1С:Предприятие 7.7" при помощи конфигурации "Конвертация данных 2.0". При написании данного материала мы решили пойти по пути демонстрации общей концепции конфигурации "Конвертация данных 2.0" и приемов работы посредством разбора типичных ситуаций, возникающих в практике конвертации данных между типовыми конфигурациями. Как показывает опыт, такой способ изложения наиболее эффективен, поскольку позволяет специалисту быстро приобрести навыки использования средств конфигурации в своей повседневной деятельности.

Для работы с методическим руководством вам понадобится конфигурация "Конвертация данных 2.0" версии 2.09.1, внешние обработки MD80Exp.epf и V8Exchan.epf, поставляемые с релизом конфигурации "Конвертация данных 2.0". Для реализации механизма обмена данными, описанного в руководстве, необходима конфигурация "Управление торговлей 10.2" версии 10.2.5 или выше.

Общие принципы конвертации данных

Конфигурация "Конвертация данных 2.0" является мощным средством для организации конвертации данных между конфигурациями любой структуры и сложности, функционирующими как на платформе "1С:Предприятие 7.7", так и на платформе "1С:Предприятие 8". Рассмотрим общую схему конвертации данных между конфигурациями, созданными на платформе "1С:Предприятие 8".

Обмен данными по технологии "Конвертация данных 2.0" можно разделить на две стадии – стадию подготовки правил обмена и стадию обмена данными. Самым сложным и ответственным этапом, безусловно, является подготовка правил обмена. Процесс подготовки правил обмена представлен на схеме 1. Как видно на схеме, основным "сырьем" для подготовки правил выступает XML-описание структуры метаданных информационных баз, которые участвуют в обмене. Описание метаданных готовится с помощью внешней обработки MD80Exp.epf (для конфигураций на платформе "1С:Предприятие 8") в виде XML-файла. Затем этот файл обрабатывается средствами конфигурации "Конвертация данных 2.0". В базе конвертации создаются специализированные объекты для описания метаданных, на основе которых будут готовиться правила обмена данными.

Ключевые задачи при подготовке правил обмена – настройка соответствий между объектами метаданных конфигураций источника и приемника и настройка соответствий между свойствами объектов (реквизитами объектов и табличных частей). Процесс подготовки файла обмена заканчивается генерацией XML-файла правил и условно разделяется на следующие этапы:

  1. Установка конфигураций источника и приемника, общая настройка правил обмена.
  2. Настройка соответствий между объектами метаданных источника и приемника – создание правил конвертации объектов.
  3. Настройка соответствий между свойствами объектов в рамках правил конвертации объектов, в том числе установка соответствий значений перечислений – создание правил конвертации свойств и правил конвертации значений.
  4. Настройка принципов выборки объектов для выгрузки – создание правил выгрузки.
  5. Настройка операций, проводящихся перед загрузкой данных, – создание правил очистки данных.
  6. Дополнительная настройка обработчиков событий.

Содержание этих технологических этапов будет развернуто при разборе примера в следующих параграфах руководства. Поэтому для лучшего понимания рекомендуем в процессе изучения примера по созданию правил обмена обращаться к технологическим схемам.

Вторая стадия – собственно обмен данными. Это стадия использования подготовленных правил конвертации. Как видно из схемы 2, с помощью внешней обработки V8Exchan.efd, которая использует файл правил обмена, в конфигурации-источнике формируется XML-файл данных. Выгрузка данных производится обработкой в соответствии с правилами обмена, поэтому в файле данных находятся уже сконвертированные данные, предназначенные для загрузки в источник, а также правила, содержащие обработчики, исполняемые при загрузке данных. Таким образом, при загрузке используется только один файл, который обрабатывается той же обработкой V8Exchan.efd.

Для первого знакомства с концепцией системы "Конвертация данных 2.0" рассмотрим решение задачи, с которой сталкивалось подавляющее большинство специалистов, работающих с типовыми конфигурациями: перенос данных справочника из одной информационной базы в другую.

Предположим, что для организации нового рабочего места на торговом предприятии необходимо из текущей базы данных предприятия в новую базу данных перенести информацию о товарах. Такая ситуация может возникнуть при создании отдельной информационной базы филиала компании, удаленной торговой точки, склада и пр.

Поскольку пример рассматривается в целях ознакомления с общей концепцией конфигурации "Конвертация данных 2.0", рассмотрим простейший случай, когда в конфигурации источник и приемник идентичны, учет ведется в типовой конфигурации "Управление торговлей 10.2". Наша задача, соответственно, состоит в том, чтобы корректно перенести в новую базу данных справочник Номенклатура.

Готовим описание метаданных

Для подготовки правил обмена необходимо получить информацию о структуре конфигураций источника и приемника данных. Для этих целей используется внешняя обработка MD80Exp.epf для конфигураций на платформе "1С:Предприятие 8" и MD77Exp.ert для конфигураций на платформе "1С:Предприятие 7.7". Напомним, что эти обработки входят в комплект дистрибутива конфигурации "Конвертация данных 2.0".

Для подготовки XML-файла, содержащего описание структуры метаданных конфигурации "Управление торговлей 10.2", нужно запустить внешнюю обработку MD80Exp.epf, указать путь для XML-файла и нажать кнопку Выгрузить. Флажки настроек позволяют отключать выгрузку некоторых объектов метаданных для ускорения выполнения обработки.

Формирование описания структуры метаданных займет некоторое время. После завершения обработки мы получили XML-файл, содержащий описание метаданных конфигурации "Управление торговлей 10.2" в формате конфигурации "Конвертация данных 2.0".

Теперь нам необходимо загрузить полученное описание метаданных в информационную базу конфигурации "Конвертация данных 2.0" для подготовки правил обмена. Для этого запустим конфигурацию "Конвертация данных 2.0" и откроем обработку Загрузка описания метаданных с помощью кнопки Загрузка описания структуры конфигурации на панели интерфейса. В поле Имя файла выберем файл описания метаданных, который мы только что подготовили. И нажмем Выполнить загрузку для запуска обработки.

Обратите внимание, что в форме обработки установлен флажок Новая конфигурация. При его отключении можно произвести обновление уже загруженного описания метаданных.

Для хранения описаний структуры метаданных в конфигурации "Конвертация данных 2.0" используются справочники Конфигурации, Объекты, Свойства и Значения. Справочник Конфигурации предназначен для хранения общей информации о конфигурации. Справочник Объекты хранит описания объектов метаданных и подчинен справочнику Конфигурации. Справочник Свойства нужен для регистрации реквизитов объектов и реквизитов табличных частей. Справочник Значения предназначен для хранения значений перечислений и предопределенных элементов объектов метаданных конфигураций. С помощью этих справочников полностью описывается структура метаданных любых конфигураций, созданных как на платформе "1С:Предприятие 8", так и на платформе "1С:Предприятие 7.7". Все справочники не предусматривают редактирования вручную.

Для просмотра структуры метаданных той или иной конфигурации предназначена обработка Объекты метаданных конфигурации. Запустим обработку нажатием кнопки Описание конфигурации на панели интерфейса и выберем для просмотра конфигурацию "Управление торговлей".

В верхней части формы в виде дерева представлена структура метаданных. В табличной части на закладке Свойства показаны реквизиты, табличные части объектов метаданных. Для документов дополнительно показана структура записей регистров, движения по которым делает соответствующий документ.

Так как в рамках нашей задачи конфигурация-источник и конфигурация-приемник идентичны, подготовительный этап создания правил обмена закончен. В случае, когда нужно организовать обмен между конфигурациями разной структуры, весь процесс нужно повторить для второй конфигурации.

Создаем правила конвертации

Теперь, когда мы загрузили структуру метаданных конфигураций, используемых в обмене, можно начинать подготовку правил обмена. Обратите внимание, что на этом этапе работа будет проводиться исключительно в конфигурации "Конвертация данных 2.0", без обращения к конфигурациям

участникам обмена. Это позволяет эффективно организовать работу даже в том случае, когда конфигурации источник и приемник для вас недоступны, а имеются только их описания в виде XML-файлов.

Первое, что нам необходимо сделать, это зарегистрировать в информационной базе новый элемент справочника Конвертации. Откроем справочник с помощью меню Справочники и создадим новый элемент. В качестве источника и приемника выберем "Управление торговлей", поскольку перенос данных мы планируем проводить в идентичную конфигурацию. Наименование конвертации определим с помощью кнопки Сформировать. В поле Имя файла правил обмена укажем путь к XML-файлу для выгрузки правил обмена.

Обратите внимание, что для одной и той же пары конфигураций мы можем создавать и редактировать несколько правил обмена данными, предназначенных для разных целей.

Для настройки правил перейдем к форме Настройка правил обмена. Она вызывается из панели интерфейса одноименной кнопкой. Выберем для редактирования правила обмена УправлениеТорговлей --> УправлениеТорговлей.

Теперь наша задача – определить, какие объекты в конфигурации-приемнике будут соответствовать объектам конфигурации-источника. Для этого предназначен справочник Правила конвертации объектов. Для каждого объекта реквизита и табличной части (свойства в терминологии "Конвертация данных 2.0") конфигурации приемника мы должны указать соответствие свойству объекта источника или способ заполнения. За эту функцию отвечает справочник Правила конвертации свойств, подчиненный элементам справочника Правила конвертации объектов. В форме Настройка правил обмена они показаны на закладках Правила конвертации и Свойства.

Очевидно, для корректной перегрузки справочника Номенклатура нам нужно создать правило конвертации для этого справочника и правила конвертации свойств для каждого реквизита.

Создать правило конвертации можно вручную, но проще воспользоваться сервисом конфигурации. С помощью пункта Синхронизация объектов подменю Обработки запустим обработку Автонастройка правил конвертации объектов. Мы видим, что обработка провела автоматическую синхронизацию всех объектов по наименованию, а нам предлагается воспользоваться результатом, устанавливая или снимая флажки. С помощью обработки можно создавать сразу множество правил. Для нашего случая оставим выбранным только справочник Номенклатура.

По кнопке Записать будет создано новое правило конвертации объекта. Закроем форму автосинхронизации и вернемся к настройке правил. Мы видим, что в дереве правил конвертации появилось правило Номенклатура. Данное правило описывает конвертацию данных справочника Номенклатура конфигурации-источника в конфигурацию-приемник.

Теперь перейдем к формированию правил конвертации свойств. Воспользуемся обработкой автонастройки свойств (пункт Синхронизация свойств объектов подменю Обработки). Так же как и для объектов, автонастройка проанализирует реквизиты источника и приемника и предложит нам вариант установления соответствий.

Оставим все флажки установленными. По нажатию кнопки Записать для всех выбранных соответствий реквизитов будут созданы правила конвертации.

Настраиваем правила конвертации свойств

Итак, всю "черную" работу за нас выполнили обработки автосинхронизации. Теперь рассмотрим более детально результат и внесем необходимые коррективы.

Обратим внимание, что часть правил конвертации свойств может быть отключена с помощью флажка в колонке Отключить табличной части, на закладке Конвертация свойств. При отключении правила оно не будет исполнятся, а реквизиты источника, указанные в нем, выгружены не будут. Для того чтобы несколько облегчить себе задачу, отключим некоторые правила конвертации свойств. Поставим флажки Отключить в правилах ОтветственныйМенеджер, ОсновнойПоставщик, СтатьяЗатрат, НоменклатурнаяГруппаЗатрат, ВесовойКоэффициентВхождения, ТипШтрихКода и ОсновоеИзображение, предполагая, что учет закупок и затрат в базе-приемнике будет организован без использования данных из базы-источника, учет штрихкодов вестись не будет, а изображения товаров не зарегистрированы.

Если загрузка данных ведется в "пустую" базу, то все объекты создаются "заново". Однако если часть данных уже имеется, а нужно только обновить ряд реквизитов, то необходимо задать принцип, по которому будет устанавливаться соответствие объектов. Для этого можно воспользоваться флажками в колонке Поиск табличной части, на закладке Конвертация свойств. Если мы устанавливаем флажок, то перед обработкой объекта алгоритм загрузки будет искать объект по значению реквизита приемника, указанного в правиле. Установим флажок на правиле конвертации свойств Код. Теперь элементы справочника Номенклатура при загрузке будут синхронизированы по коду. Перед загрузкой будет проводиться поиск по коду, и, если элемент справочника найден, он будет перезаписан с новыми значениями реквизитов.

Если же в колонке Поиск не будет установленных флажков, то для справочника Номенклатура элемент при каждой загрузке будет создаваться заново. Это может иметь очень неприятные последствия, если вы по ошибке запустите загрузку вторично. Новые элементы будут дублироваться даже в случае, когда у справочника включена уникальность кодов и есть элементы с такими же кодами.

Реквизиты справочника Номенклатура имеют разные типы. Для реквизитов типа Число, Строка, Дата, Булево механизм установки значений очевиден - значение реквизита объекта-источника присваивается реквизиту объекта-приемника. Но как быть, если реквизит имеет ссылочный тип, как, например, реквизит БазоваяЕдиницаИзмерения справочника Номенклатура. Очевидно, что в том случае, если ссылка не обнаружена, должен быть создан новый объект в базе-приемнике. Для этого нам нужно описать новое правило конвертации для справочника КлассификаторЕдиницИзмерения, а потом указать в правиле конвертации свойств для реквизита БазоваяЕдиницаИзмерения это правило как "Правило конвертации".

Сложный по описанию механизм очень прост в реализации. Опыт создания правил конвертации нами уже накоплен при создании правила конвертации справочника Номенклатура. Поэтому, руководствуясь методикой предыдущего раздела, создаем новое правило конвертации объектов для справочника КлассификаторЕдиницИзмерения.

Теперь осталось назначить новое правило конвертации объектов для правила конвертации свойств БазоваяЕдиницаИзмерения. Это нужно сделать в форме элементы справочника, открыв ее двойным щелчком мыши на соответствующей строке таблицы правил конвертации свойств.

Но кроме реквизита БазоваяЕдиницаИзмерения у нас имеются еще реквизиты ссылочного типа. Проанализируем их по порядку. Для реквизита Родитель правило конвертации уже назначено при генерации обработкой. Для корректной перегрузки остальных реквизитов нам необходимо создать дополнительно правила конвертации объектов для справочников ЕдиницыИзмерения, НоменклатурнаяГруппа, КлассификаторСтранМира и НомерГТД. Конвертацию перечисления СтавкиНДС мы пока отложим.

Воспользуемся еще раз обработкой автосинхронизации объектов. С ее помощью мы сможем создать сразу все нужные нам правила конвертации объектов.

Для потокового создания правил конвертации свойств запустим обработку Групповое создание правил конвертации свойств/значений (пункт Групповое создание правил конвертации свойств/значений подменю Обработки). В списке отключим правила Номенклатура и КлассификаторЕдиницИзмерения, для которых мы уже создали правила конвертации свойств.

В результате у нас появятся уже семь правил конвертации. Обратите внимание, что правило СтавкиНДС создано автоматически в процесс группового создания свойств. Эта обработка не только создает правила конвертации свойств, но и контролирует наличие правил конвертации для объектов ссылочного типа, поэтому при обработке реквизита СтавкаНДС было создано правило конвертации СтавкиНДС.

После этого нам необходимо установить вручную правила конвертации для реквизитов, имеющих ссылочные типы. Если бы мы воспользовались обработкой Групповое создание правил конвертации свойств/значений сразу, то это не потребовалось бы, так как соответствующие правила конвертации были бы созданы автоматически. Однако первый вариант создания правил был более нагляден для понимания структуры объектов конфигурации. Итак, мы должны заполнить правила конвертации для реквизитов ЕдиницаХраненияОстатков, СтавкаНДС, НоменклатурнаяГруппа, СтранаПроисхождения, НомерГТД.

Теперь вернемся к конвертации перечисления СтавкиНДС. Правило конвертации уже создано, поэтому остается только определить соответствия между значения приемника и источника. Это легко сделать с помощью обработки Автонастройка правил конвертации значений (пункт Синхронизация значений объектов подменю Обработки).

На этом наша работа практически завершена. Осталось установить реквизиты синхронизации для правил конвертации объектов, которые мы создавали потоковой обработкой. Для этого перейдем к закладке Синхронизация и нажмем Обновить.

Теперь для каждого правила мы видим текущий и предлагаемый способ синхронизации. Нажмем кнопку Записать для установки синхронизации. В результате для всех выбранных правил будет установлены новые реквизиты синхронизации.

Перегружаем данные

Для выгрузки данных недостаточно установить соответствия объектов и реквизитов источника и приемника. Нужно еще указать, какие именно объекты и как выгружать. Для этого необходимо создать правила выгрузки данных.

Перейдем к закладке Правила выгрузки данных в форме Настройка правил обмена и создадим новое правило выгрузки. В качестве объекта выборки укажем СправочникСсылка.Номенклатура. Способ выгрузки определим как Стандартная обработка. В этом случае будут выгружать все объекты справочника Номенклатура. В качестве правила конвертации укажем правило Номенклатура.

На этом работа по редактированию правил завершена. Поскольку наша задача

осуществить перенос справочника Номенклатуры, то полностью будет выгружаться только справочник Номенклатура, элементы других справочников будут выгружаться только при наличии на них ссылок в элементах справочника Номенклатура. Нужно отметить, что в алгоритмах выгрузки данных универсальной обработки V8Exchan.epf предусмотрен механизм предотвращения повторной выгрузки объектов. Каждый объект выгружается только один раз, если иное не предусмотрено настройками правил. Это сделано для того, чтобы сделать файл данных компактным и ускорить процесс выгрузки данных.

Теперь можно перейти к генерации файла правил обмена.

Для выполнения этой операции вызовем обработку Выгрузка правил обмена по кнопке Сохранить правила. В форме обработке укажем XML-файл для сохранения правил. По умолчанию это поле будет заполнено из элемента справочника Конвертации. Сохраним правила в файл с помощью кнопки Выполнить.

Теперь можно приступить к финальной стадии. Откроем базу-источник и запустим обработку V8Exchan.epf. В поле Имя файла данных нужно указать имя файла выгрузки. В поле Имя файла правил выберем только что созданный файл правил обмена и нажмем кнопку Загрузить правила.

С помощью кнопки Выгрузить данные запустим обработку выгрузки. Обратите внимание, что выгрузка данных может занять значительное время.

Итак, в результате использования обработки V8Exchan.epf мы получили XML-файл, подготовленный для загрузки в базу-приемник. Откроем теперь информационную базу-приемник и запустим ту же самую V8Exchan.epf. Только теперь нас интересует закладка Загрузка данных. В поле Имя файла данных выберем файл данных, созданный выгрузкой, и нажмем Загрузить данные. После некоторого ожидания – результат получен!

Дальнейшая доработка правил обмена

Через некоторое время наше торговое предприятие принимает решение открыть офис по приему заказов на продукты питания в пригороде. Для эффективной работы необходимо постоянно иметь в базе данных офиса актуальную версию справочника Номенклатура. Причем было решено каждый раз помечать на удаление те номенклатурные позиции, которых в настоящий момент нет на складе в центральном офисе. Загрузка справочника должна производиться еженедельно. При этом товары, зарегистрированные в базе данных офиса, заказ которых стал невозможен (например, нет на складе), должны быть помечены на удаление, или при восстановлении доступности номенклатурной позиции для заказа пометка удаления должна быть снята.

Реализовать такой механизм нам поможет использование правил очистки данных. Правила очистки выполняются в базе-приемнике перед загрузкой объектов. С помощью этого инструмента можно пометить на удаление или удалить непосредственно объекты данных. В нашем случае мы будем ставить пометки на удаление у элементов справочника Номенклатура. При синхронизации элемента справочника в момент загрузки пометка будет снята, поскольку загружаемые элементы номенклатуры не имеют пометки на удаление. Таким образом, все "лишние" элементы, отсутствующие в загружаемом файле, останутся помеченными на удаление.

Для создания правил очистки вернемся в знакомую нам форму настройки правил обмена. Выберем для редактирования элемент справочника Конвертации УправлениеТорговлей --> УправлениеТорговлей, перейдем к закладке Правила очистки данных и создадим новое правило.

В качестве объекта выборки укажем СправочникСсылка.Номенклатура, способ выборки – Стандартная выборка. Это означает, что при выполнении правила для всех элементов справочника Номенклатура будет поставлена пометка на удаление.

Наш офис принимает заказы исключительно на товары, поэтому желательно установить запрет на выгрузку услуг. Если для элемента справочника Номенклатура реквизит Услуга установлен Истина, то он гарантированно не должен выгружаться. Контроль выгрузки услуг лучше всего сразу сделать опциональным, чтобы не менять правила, если удаленный офис станет принимать заказы и на услуги.

Для этого случая нам придется освоить два новых приема работы с конфигурацией "Конвертация данных" - использование обработчиков и настройку параметров.

Параметры – это специализированная структура данных в алгоритмах выгрузки, с помощью которой можно обращаться к переменным обработки. Настройка структуры параметров для правил конвертации осуществляется в конфигурации "Конвертация данных", а установка значений параметров возможна в форме обработки V8Exchan.epf. Обратите внимание, что механизм установки параметров в форме реализован в обработках V8Exchan.epf, начиная с версии 2.01.

Для редактирования параметров откроем форму элемента справочника Конвертация для редактируемых правил обмена и перейдем на закладку Параметры. Создадим новый элемент справочника Параметры. Присвоим имя параметра – ВыгружатьУслуги. Имя параметра служит для обращения к нему в структуре Параметры при написании программного кода в обработчиках. Наименование будет отображаться в табличной части параметров, в форме обработки универсального обмена данными. Для того чтобы параметр был виден в диалоге при настройке выгрузки, нужно установить флажок Устанавливать в диалоге и выбрать тип значения параметра. Для работы с параметрами в диалоге необходимо также установить флажок Выгружать параметры в формате версии 2.01 в форме элемента справочника Конвертация.

Недостаточно просто указать параметры, нужно, чтобы алгоритм выполнения выгрузки "понимал", в каком случае выгружать элемент, а в каком

нет. Для подобных (и многих других) случаев используется механизм обработчиков. Суть его заключается в том, что в ключевых точках выполнения всех базовых алгоритмов выгрузки и загрузки данных обрабатывается код, написанный разработчиком при создании правил обмена. Естественно, что использование такого тонкого инструмента требует осторожности и продуманности. Мы рекомендуем перед написанием собственных обработчиков внимательно ознакомиться со справкой к конфигурации "Конвертация данных 2.0", где описаны все доступные в обработчиках переменные и способы их использования, а также перечислены виды обработчиков и особенности их вызова в алгоритмах обмена данными.

Для нашей цели необходимо использовать обработчик правила выгрузки Перед выгрузкой. Откроем правило выгрузки данных Номенклатура и поместим в поле Перед выгрузкой, на закладке События следующий программный код:

Копировать в буфер обмена

Если Параметры.ВыгружатьУслуги = ЛОЖЬ И Объект.Услуга = ИСТИНА Тогда
    Отказ = ИСТИНА;
КонецЕсли;

Что же делает наш обработчик? При написании программного кода мы использовали переменные алгоритмов выгрузки данных. Структура Параметры служит для обращения к параметру ВыгружатьУслуги, который задается в форме обработки обмена данными. Переменная Объект предоставляет доступ к выгружаемому объекту. А переменная Отказ позволяет контролировать отказ от выгрузки текущего объекта. Обработчик исполняется непосредственно перед началом выгрузки объекта, что и дает возможность отменить выгрузку объекта.

Наша задача решена, осталось только сохранить правила обмена в файле.

Запустим базу-источник, откроем обработку V8Exchan.epf и загрузим правила. Перейдем к закладке Параметр выгрузки. Мы видим, что в табличной части появилась строка Выгружать услуги. Теперь мы можем без редактирования правил обмена изменять настройки выгрузки.

Безусловно, нам необходимо выгрузить не все элементы справочника Номенклатура, а только отобранные по условию, например, входящие в определенную группу. Это легко сделать, используя настройку отбора для правил выгрузки. По двойному клику правой кнопки мыши на соответствующей строке в колонке Отбор данных откроется форма настроек отбора.

Созданные установки можно сохранить в настройках. При этом в настройках будут сохранены правила обмена полностью, с настройками построителей и параметров. Обратите внимание, что сервис по работе с настройками доступен в обработках V8Exchan.epf, начиная с версии 2.01.

Установить конфигурацию "Конвертация данных"